:art: fix_user_coupon_info

huangqimin001 4 gadi atpakaļ
vecāks
revīzija
c6fa504e61
3 mainītis faili ar 107 papildinājumiem un 0 dzēšanām
  1. 3 0
      commands/management/commands/cpon.py
  2. 0 0
      shells/fixed/__init__.py
  3. 104 0
      shells/fixed/cpon.py

+ 3 - 0
commands/management/commands/cpon.py

@@ -91,6 +91,9 @@ class Command(CompatibilityBaseCommand):
91 91
                         coupon_id = right.coupon_level5_id
92 92
                         coupon_num = right.coupon_level5_num
93 93
 
94
+                    if not coupon_id:
95
+                        continue
96
+
94 97
                     try:
95 98
                         coupon = CouponInfo.objects.get(coupon_id=coupon_id)
96 99
                     except CouponInfo.DoesNotExist:

+ 0 - 0
shells/fixed/__init__.py


+ 104 - 0
shells/fixed/cpon.py

@@ -0,0 +1,104 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from TimeConvert import TimeConvert as tc
4
+
5
+from account.models import UserInfo
6
+from coupon.models import CouponInfo, UserCouponInfo
7
+from member.models import RightInfo
8
+
9
+
10
+def fix_user_coupon_info():
11
+    rights = RightInfo.objects.filter(is_send_coupon=True, status=True)
12
+    coupons = {
13
+        'level1': {},
14
+        'level2': {},
15
+        'level3': {},
16
+        'level4': {},
17
+        'level5': {},
18
+    }
19
+    for right in rights:
20
+        if right.coupon_level1_id:
21
+            if right.coupon_level1_id not in coupons['level1']:
22
+                coupons['level1'][right.coupon_level1_id] = 0
23
+            coupons['level1'][right.coupon_level1_id] += right.coupon_level1_num
24
+            if right.coupon_level1_id not in coupons['level2']:
25
+                coupons['level2'][right.coupon_level1_id] = 0
26
+            coupons['level2'][right.coupon_level1_id] += right.coupon_level1_num
27
+            if right.coupon_level1_id not in coupons['level3']:
28
+                coupons['level3'][right.coupon_level1_id] = 0
29
+            coupons['level3'][right.coupon_level1_id] += right.coupon_level1_num
30
+            if right.coupon_level1_id not in coupons['level4']:
31
+                coupons['level4'][right.coupon_level1_id] = 0
32
+            coupons['level4'][right.coupon_level1_id] += right.coupon_level1_num
33
+            if right.coupon_level1_id not in coupons['level5']:
34
+                coupons['level5'][right.coupon_level1_id] = 0
35
+            coupons['level5'][right.coupon_level1_id] += right.coupon_level1_num
36
+
37
+        if right.coupon_level2_id:
38
+            if right.coupon_level2_id not in coupons['level2']:
39
+                coupons['level2'][right.coupon_level2_id] = 0
40
+            coupons['level2'][right.coupon_level2_id] += right.coupon_level2_num
41
+            if right.coupon_level2_id not in coupons['level3']:
42
+                coupons['level3'][right.coupon_level2_id] = 0
43
+            coupons['level3'][right.coupon_level2_id] += right.coupon_level2_num
44
+            if right.coupon_level2_id not in coupons['level4']:
45
+                coupons['level4'][right.coupon_level2_id] = 0
46
+            coupons['level4'][right.coupon_level2_id] += right.coupon_level2_num
47
+            if right.coupon_level2_id not in coupons['level5']:
48
+                coupons['level5'][right.coupon_level2_id] = 0
49
+            coupons['level5'][right.coupon_level2_id] += right.coupon_level2_num
50
+
51
+        if right.coupon_level3_id:
52
+            if right.coupon_level3_id not in coupons['level3']:
53
+                coupons['level3'][right.coupon_level3_id] = 0
54
+            coupons['level3'][right.coupon_level3_id] += right.coupon_level3_num
55
+            if right.coupon_level3_id not in coupons['level4']:
56
+                coupons['level4'][right.coupon_level3_id] = 0
57
+            coupons['level4'][right.coupon_level3_id] += right.coupon_level3_num
58
+            if right.coupon_level3_id not in coupons['level5']:
59
+                coupons['level5'][right.coupon_level3_id] = 0
60
+            coupons['level5'][right.coupon_level3_id] += right.coupon_level3_num
61
+
62
+        if right.coupon_level4_id:
63
+            if right.coupon_level4_id not in coupons['level4']:
64
+                coupons['level4'][right.coupon_level4_id] = 0
65
+            coupons['level4'][right.coupon_level4_id] += right.coupon_level4_num
66
+            if right.coupon_level4_id not in coupons['level5']:
67
+                coupons['level5'][right.coupon_level4_id] = 0
68
+            coupons['level5'][right.coupon_level4_id] += right.coupon_level4_num
69
+
70
+        if right.coupon_level5_id:
71
+            if right.coupon_level5_id not in coupons['level5']:
72
+                coupons['level5'][right.coupon_level5_id] = 0
73
+            coupons['level5'][right.coupon_level5_id] += right.coupon_level5_num
74
+
75
+    users = UserInfo.objects.filter(level__gte=1, status=True)
76
+    for user in users:
77
+        level_coupon = coupons.get('level{}'.format(user.level))
78
+        for coupon_id, coupon_num in level_coupon.items():
79
+            real_coupon_num = UserCouponInfo.objects.filter(user_id=user.user_id, coupon_id=coupon_id).count()
80
+            if real_coupon_num >= coupon_num:
81
+                continue
82
+
83
+            print(user.user_id, coupon_id, coupon_num - real_coupon_num)
84
+
85
+            try:
86
+                coupon = CouponInfo.objects.get(coupon_id=coupon_id)
87
+            except CouponInfo.DoesNotExist:
88
+                continue
89
+
90
+            for _ in range(coupon_num - real_coupon_num):
91
+                UserCouponInfo.objects.create(
92
+                    brand_id=coupon.brand_id,
93
+                    brand_name=coupon.brand_name,
94
+                    coupon_id=coupon_id,
95
+                    user_id=user.user_id,
96
+                    coupon_title=coupon.coupon_title,
97
+                    coupon_detail=coupon.coupon_detail,
98
+                    coupon_value=coupon.coupon_value,
99
+                    coupon_image=coupon.coupon_image,
100
+                    active_at=tc.utc_datetime(),
101
+                    expire_at=tc.utc_datetime(days=365),
102
+                    coupon_valid_period=coupon.coupon_valid_period,
103
+                    coupon_limit_model_ids=coupon.coupon_limit_model_ids,
104
+                )